package com.example.mymarket.controller;

import com.example.mymarket.entity.User;
import com.example.mymarket.service.UserService;

import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpSession;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.web.ServerProperties;
import org.springframework.boot.web.servlet.server.Session;
import org.springframework.http.HttpRequest;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;
import java.util.Map;

import java.sql.SQLException;

//前后端分离开发，restcontroller，返回的是字符串，json格式
//前后端不分离，themleaf模板，controller，返回的是视图文件的名字
//重定向 ， redirect:/路径
//静态资源添加: static img css js
@Controller
public class UserController {
    //    写与前端交互的方法，如何把数据给到前端显示，或者如何从前端接受到数据，然后做出对应的操作
    @Autowired
    UserService userService;

    @Autowired
    HttpServletRequest request;


    //默认进入的首页就是登录页，
    @RequestMapping("/")
    public String login(Model model){
        return "login";
    }

    @RequestMapping("/main")
    public String main(Model model){
        Object username= request.getSession().getAttribute("username");
        if(username==null){
            return "redirect:/";
        }else {
            model.addAttribute("username", username);
            return "main";
        }
    }

    @RequestMapping("/register")
    public String register(){
        return "register";
    }
    //写一个处理用户注册的方法
    @RequestMapping("/registerProcess")
    public String registerProcess(@RequestParam String username,@RequestParam String userpwd){
//        查看有没有接收用户前端的输入
        if(username.isEmpty()){
            return "redirect:/register";
        }else{
//            1.组装一个用户实体对象
            User user = new User();
            user.setName(username);
            user.setPassword(userpwd);
            user.setRights("0");
            user.setStatus("0");
            System.out.println(user);
//            2.调用service的add方法
            if(userService.add(user)==1){
                return "redirect:/login";
            }else{
                return "redirect:/register";
            }
        }
    }
    //    登录页提交数据后哪个服务来处理登录
    @RequestMapping("/login")
    public String loginProcess(HttpServletRequest request, @RequestParam String username, @RequestParam String userpwd){
//        首先看有没有接受到数据
        System.out.println(username);
        System.out.println(userpwd);
//        如果传递过来的用户名和密码都正确，就直接进入系统管理的主页面main.html
        User user= new User();
        user.setName(username);
//        从数据库里查询返回的一个用户对象
        User userdb = userService.findOne(user);
        //        如果用户名和密码有错误，然后就去错误提示页面
        if(!userdb.getName().isEmpty()){
            if(userdb.getPassword().equals(userpwd)){
                HttpSession session = request.getSession();
                session.setAttribute("username",username);
                return "redirect:/main";
            }
            else{
                return "loginError";
            }
        }else{
            return "loginError";
        }
    }

    //    登录用户退出
    @RequestMapping("/logout")
    public String logout(){
//        1.直接清除session里的username对应的值
        request.getSession().removeAttribute("username");

//        2.返回到登录页面
        return "redirect:/";
    }

}
